﻿using System;

namespace Common.ExpressionParsing
{
    public abstract class LogicalExpressionVisitor
    {
        public IExtensionManager ExtensionManager { get; set; }

        public object Result { get; protected set; }

        public abstract Object Evaluate(LogicalExpression expression);

        public abstract void Visit(LogicalExpression expression);
        public abstract void Visit(BinaryExpresssion expression);
        public abstract void Visit(UnaryExpression expression);
        public abstract void Visit(Value expression);
        public abstract void Visit(Function function);
        public abstract void Visit(Parameter function);
    }
}
